Skip to main content

Builder

В данном классе находятся все методы для сборки страниц. Порядок выполнения методов описан в списке Builder::$build_flow. Сборка запускается с помощью метода generate_build

generate_build

  • Удаляет логи предыдущей сборки
  • Устанавливает статус Building
  • Повышает счетчик сборок (revesions) на один
  • По очереди запускает методы из свойства $build_flow. Перед каждым запуском проверяется, не требуется ли остановка сборки
  • После успешной сборки, статус Completed

  • Во время сборки может быть выброшено исключение BuildStoppedException. В таком случае сборка перейдет в статус Stopped и будет остановлена
  • Могут быть выброшены и другие исключения. Они считаются фатальными, поэтому сборка перейдет в статус Error и будет остановлена

$build_flow

Следующий методы включены в процесс сборки:

remove_build_dir

Удаляет файлы предыдущей сборки

create_build_dir

Создает директорию для новой сборки

copy_custom_paths

Копирует все пути из настройки сборок "Прочее > Дополнительные поля и файлы" в сборку

build_pages

Собирает все сущности сборки.

Для старта берутся страницы выбранные в настройке сборки и модалки из Внешний вид → Плеер курса → Доп. контент (ранее «Настройка сборок > Доп. Контент > Модальные окна»).

По умолчанию в сборку добавляются только заданные в настройках сущности, но можно включить автоматическое добавление страниц и модалок. Сущность автоматически добавится в сборку, если на нее ссылается какая-то сущность из сборки (есть ссылка на странице, открывается с помощью триггеров)

prepare_elementor

Elementor и Elementor pro требуют модификаций файлов перед попаданием в сборку. Модификации происходят с помощью класса Elementor

configure_build

Генерирует конфигурационные файлы сборки. Набор файлов зависит от типа сборки, настроек и списка сущностей

remove_empty_dirs

В сборку могут попасть пустые директории, захламляющие структуру файлов. На данном этапе эти директории удаляются

create_archive

Архивирует директорию со сборкой. Для работы архивации должна быть включена поддержка zip (существовать класс ZipArchive) и использовать OS Linux (на Windows этот этап пропускается)